home *** CD-ROM | disk | FTP | other *** search
- /=========\
- | T-SHARE |
- \=========/
-
- Computing Resource Center
- 2116 Wilshire Blvd. #202
- Santa Monica, Ca. 90405
- Attn: Marty Ross
-
- Release: 2.1, 08/01/84
- By: Marty Ross, at the Computing Resource Center
- System: IBM-PC with standard communications adapter (COM:)
- Requirements: Tested using PC-DOS 2.0/2.1, 128K or larger PC preferred.
- Contribution: Suggested $10.00; puts you on CRC mailing list.
-
- Abstract: TSHARE is a demonstration terminal emulator, showing the
- capability of the IBM-PC to multitask, in a practical way.
-
- Distribution: I am distributing this preliminery version freely,
- in hopes to stimulate interest and feedback. No fee
- may be charged, and this document must accompany the
- program(s) documented herein.
-
- Description: TSHARE is a "background" terminal emulator. Unlike most
- "terminal" programs for the IBM-PC which 'tie up' the
- computer, TSHARE, once activated, can be used simultaneously
- with almost any other application.
-
- Features: Other than its ability to share the IBM-PC with "foreground"
- tasks, TSHARE supports a 'typeahead line turnaround protocol',
- which may be used on many IBM mainframe systems (e.g. VM/SP)
- to enable a 'typeahead' capability. Also, HALF DUPLEX operation
- may be selected for systems which don't 'echo' characters sent.
- Thirdly, it is possible to disable the effect of incoming BELL
- characters, in case you wish to be discrete about your terminal
- voyages on systems which make liberal use of bells (a feature
- which should have been built into the PC, in my opinion). The
- last "feature" I will mention really should be a requirement for
- any "terminal" program: the ability to transmit a "BREAK" signal
- to the host computer (required by many half duplex hosts which
- cannot 'watch' for control characters like ^C and ^S).
-
- Usage: TSHARE is distributed in two parts: "NEW14H.COM", which, by
- itself, provides a powerful enhancement to the communication
- ability of the IBM-PC using its async (COM:) adapter, and
- "TSHARE.COM", the 'application' component.
-
- To refresh your memory after learning about TSHARE, or for
- complete syntax rules for activating TSHARE, type "TSHARE ?"
- in DOS for a help screen. The same applies to the "NEW14H"
- program.
-
- There are four steps necessary to activate TSHARE so that
- it may be used as a terminal emulator:
-
- 1.) Initialize PC-DOS
- 2.) Install the NEW14H communication enhancements
- 3.) Install the TSHARE application component
- 4.) Initialize the COM: port for desired baud/parity
- (TSHARE DOES NOT DO THIS: USE PC-DOS "MODE.COM")
-
- A typical installation sequence (which can be combined into
- a .BAT file, such as "AUTOEXEC.BAT"):
-
-
- +---------------------------------------------------------+
- | |
- (1) | <ALT>+<CTL>+<DEL> ... |
- | |
- | IBM Disk Operating System |
- | Version 2.xx ... |
- | |
- (2) | A>new14h |
- | NEW14H - 2.x - 08/01/84 - M.Ross @CRC, (C) 1984 |
- | Auxiliary COM1: port driver active. |
- | |
- (3) | A>tshare |
- | TSHARE - 2.x - 08/01/84 - M.Ross @CRC, (C) 1984 |
- | (Using NEW14H enhancements ver 2.x) |
- | |
- (4) | A>mode com1:300,n,8 |
- | |
- | A>rem TSHARE can now be "called up" anytime until |
- | A>rem we re-boot (CTL+ALT+DEL), by pressing |
- | A>rem '<SHIFT>+[PrtSc]', unless another program |
- | A>rem redefines our interrupts. |
- | |
- +---------------------------------------------------------+
- Figure 1.
-
- Notice that after "running" the TSHARE program, we came back to PC-DOS.
- To reiterate, TSHARE works "in the background", and is transparent to
- the PC-DOS user, until he switches into "terminal mode". From any
- subsequent environment[1], terminal mode may be entered by pressing
- the <SHIFT>+[PrtSc] keys together[2]. For example, while assembling
- a lengthy program using the Macro Assembler, if TSHARE is active,
- press <SHIFT>+[PrtSc], and initiate a terminal session:
-
- +---------------------------------------------------------+
- | |
- | A>masm myprog |
- | Object file [MYPROG.OBJ]: |
- | Listing file [NUL]: |
- | Cross Reference [NUL]: |
- | |
- | T-Share: ON |
- | |
- | AT TD 1-213-829-1487 |
- | CONNECT |
- | |
- | CRC-PC online |
- | |
- +---------------------------------------------------------+
- Figure 2.
-
- First, we started our "foreground task" (the assembler), then we
- switched into terminal mode by pressing <SHIFT>+[PrtSc]. TSHARE
- indicated our "terminal" status, and immediately placed us online
- (in example, to a Hayes Modem), from where we can start/continue
- our current terminal session.
-
- Note that if the foreground task sends output to the screen, it will
- be interleaved with our terminal output. In future versions, it may
- be possible to re-route, ignore, or accumulate foreground output.
- It would be easy to implement a "split-screen" where a given portion
- of the screen would be 'dedicated' to terminal output, while the rest
- will display the output from the foreground task (see 'Directions:').
-
- If we switch back to the foreground task (get out of terminal mode)
- before concluding our terminal session, then any data which comes in
- over the communication line is saved (because of NEW14H interrupt
- facilities: up to 32K of data), and will be quickly displayed by
- TSHARE, until it is 'caught up' with the incoming data. To 'freeze'
- the fast display of buffered data, use <Ctrl>+<S>. Any character
- will cause the listing to resume.
-
- In order to transmit a BREAK signal (approx 500 millisecond MARK
- state), while in terminal mode only, use the <Ctrl>+[Break] key
- pair. In terminal mode, this action does not affect the foreground
- task.
-
-
- Why TSHARE?: TSHARE was written because I do alot of compilation using
- a good, but slow compiler. I purchased a COM: port in order
- to facilitate my interaction with our large computer at work,
- only to find that I really needed an extra terminal for use
- when my PC was busy churning away on my programs. I found it
- unforgivable that none of the other "popular" terminal programs
- would use the (almost) wonderful multi-tasking capabilities of
- the IBM-PC, and therefore my investment in additional hardware
- was less attractive because I couldn't use it most of the time!
- By using the communication interrupts (NEW14H), and a simple
- byte multiplexor scheme (TSHARE uses the PC-BIOS timer inter-
- rupt), these goals were easily achieved with a few hours of
- assembly programming.
-
- Future Future versions of TSHARE will necessarily incorporate a
- Directions: file transfer protocol; perhaps XMODEM. Also, ANSI emulation
- is on the agenda since full-screen support over low speed lines
- will shortly be available for our VM/SP system. Thus, IBM
- 3270 style communication or other 'formatted screen' support
- will be possible. Alternatively, a "terminal window" can
- be used so that both foreground and "background" tasks can
- be monitored on the same screen, without confusion, as may
- result with this version's scheme of interleaving both
- terminal and foreground output.
-
- Disclaimer: Though I've tested TSHARE under varying conditions, I cannot
- guarantee that TSHARE will work in every case/PC configuration.
- Also, I suggest you use caution when using TSHARE in new
- situations (foreground programs, etc): I will not be liable
- for any damage caused, but would like to be informed if any
- undesireable TSHARE interactions occur. Please write me.
-
- About the Author:
-
- Marty Ross is a consultant for the Computing Resource Center,
- a Santa Monica based data processing firm. CRC uses the IBM
- VM/SP operating system to provide its clients with an inter-
- active method to access popular data handling facilities,
- such as SAS, PL/1, FORTRAN, and the On-Line Data System, CRC's
- own database management product. Recently, CRC has purchased
- IBM-PC's to link many of its remote clients to the mainframe
- system. To facilitate compatibility with other microcomputers
- and terminals, CRC has operated a public access DEMOnstration
- account and bulletin board system where anyone with a terminal
- can call to find out about our services, rates, or expertise.
- Because of this, keep your eye out for more communication
- software from CRC: especially if interested in the elusive
- "micro -> mainframe link" which seems to be in a state of
- constant re-definition in other data processing circles.
-
-
- ----------------------------
-
- [1] NEW14H, and therefore TSHARE will be destroyed by programs such as BASIC
- or BASICA which re-define the communication interrupt driver(s). Also,
- only "nice" programs which do not 'steal' the keyboard, video, PrtSc,
- or timer interrupts may be used successfully with TSHARE.
-
- [2] Perhaps it is unfortunate that TSHARE uses the <SHIFT>+[PrtSc] key
- thus disabling it as a "print screen" function. Remember, however;
- this is only a demonstration program and was not written with profes-
- sional intent. If enough interest is shown, future versions will
- be released to those contributing new ideas, free of charge.
-
- -----------------------------
-
- /=========\
- | T-SHARE |
- \=========/
-
- Comments?
- Can you use TSHARE?
-
-
- Name: _________________________________________________________
-
-
- Address: _________________________________________________________
-
- _________________________________________________________
-
- _________________________________________________________
-
-
- ---------------------------------------------------------
-
-
- Comments: _________________________________________________________
-
- _________________________________________________________
-
- _________________________________________________________
-
- _________________________________________________________
-
- _________________________________________________________
-
- _________________________________________________________
-
- _________________________________________________________
-
- _________________________________________________________
-
- _________________________________________________________
-
- _________________________________________________________
-
- _________________________________________________________
-
-
- If you feel TSHARE contributes to your effectiveness, then please let
- me know by sending a donation of $10.00 or whatever you feel is ap-
- propriate. TSHARE was developed in my spare time, and is now not a
- commercial effort of CRC. I will continue to develop products like
- TSHARE for those who show interest - provided I can afford it. Users
- who make contributions will be entitled to a single sided diskette
- of other utilities I've developed while at CRC: please include your
- name and return address when sending donations!
-
- oneed: ret
- adv_bf endp
- ;
- ; Advance Xbf: Same as above, for output buffer.
- ;
- adv_xbf proc near
- inc di
- cmp di,offset xbuffer_end
- jc noneedx
- mov di,offset xbuffer ; wrap if at end of buffer
- noneedx: ret
- adv_xbf endp
- ;
- ;
- cbr: jmp combreak
- cmt: jmp comout
- sbt: jmp status_bytes
- cfl: jmp comflush
- sbp: jmp setbp
- ;
- ; New Int14H: Our code which intercepts INT14, AH=0, 1, 2, 3, and added fncs.
- ;
- new_int14h proc far
- sti
- push ds
- getcode
- cmp dl,com_port ; is request for our device?
- jnz get_out ; not us, get out!
- or dh,dh ; or invalid port #?
- jnz get_out ; get out!
- ; right device -- now check for supported function (to intercept)
- cmp ah,c_activity ; is it 'com active?'
- jz comactive
- cmp ah,bf_hit ; is it 'any chars in buf' ?
- jz bfhit
- cmp ah,chkbuf_code ; or 'check buffer' ?
- jz comrdy
- cmp ah,send_code ; is it 'send character' ?
- jz cmt
- cmp ah,recv_code ; is it 'receive character' ?
- jz recv_byte
- cmp ah,status_code ; is it 'port status' ?
- jz sbt
- cmp ah,length_code ; is it one of our functions ?
- jz leng ; get length code?
- cmp ah,flush_code ; or 'flush buffer' ?
- jz cfl
- cmp ah,break_code ; or 'send break signal' ?
- jz cbr
- cmp ah,read_id ; or 'read identification' ?
- jz return_id
- cmp ah,reset_ints ; or 'reset interrupt system' ?
- jz rst_int
- cmp ah,init_code ; or 'set baud/parity' ?
- jz sbp
- jmp get_out
- ;
- ; unsupported function -- pass it to old the old INT14h handler
- get_out: pop ds
- jmp cs:old_int14h ; go to old int 14 handler
- ;
- leng: call get_length ; retn # chars in cominput buff
- retds: pop ds
- iret
- ;
- ; COM_ACTIVE: